package com.campus.secondhand.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.secondhand.common.Result;
import com.campus.secondhand.entity.School;
import com.campus.secondhand.model.vo.ProductListVO;
import com.campus.secondhand.model.vo.SchoolUserStatusVO;

import java.util.List;

/**
 * 学校信息服务接口
 */
public interface SchoolService extends IService<School> {

    /**
     * 获取所有学校列表
     * 
     * @return 学校列表
     */
    Result<List<School>> getAllSchools();

    /**
     * 根据ID获取学校信息
     * 
     * @param id 学校ID
     * @return 学校信息
     */
    Result<School> getSchoolById(Long id);

    /**
     * 根据名称搜索学校
     * 
     * @param name 学校名称（支持模糊搜索）
     * @return 学校列表
     */
    Result<List<School>> searchSchoolsByName(String name);

    /**
     * 获取用户与指定学校的关系状态
     * 
     * @param id     学校ID
     * @param userId 用户ID（可选，为null时表示未登录用户）
     * @return 用户与学校的关系状态
     */
    Result<SchoolUserStatusVO> getUserSchoolStatus(Long id, Long userId);

    /**
     * 获取指定学校的商品列表
     * 
     * @param id   学校ID
     * @param page 页码，默认1
     * @param size 每页数量，默认10
     * @return 商品列表分页结果
     */
    Result<Page<ProductListVO>> getSchoolProducts(Long id, Integer page, Integer size);
}